home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 2.toast / pc / sample code / quicktime / quicktime for java / compositedeffects / src / controlpanel.java < prev    next >
Encoding:
Java Source  |  2000-09-28  |  4.0 KB  |  147 lines

  1. /*
  2.  * QuickTime for Java SDK Sample Code
  3.  
  4.    Usage subject to restrictions in SDK License Agreement
  5.  * Copyright: © 1996-1999 Apple Computer, Inc.
  6.  
  7.  */
  8. import java.awt.*;
  9. import java.awt.event.*;
  10.  
  11. import quicktime.*;
  12. import quicktime.app.display.*;
  13. import quicktime.app.anim.*;
  14. import quicktime.app.time.*;
  15. import quicktime.std.movies.MovieController;
  16. import quicktime.app.players.QTPlayer;
  17.  
  18.  
  19. /**
  20.  * A simple panel of AWT objects to demonstrate how AWT can be used to control a
  21.  * QuickTime movie.
  22.  */
  23. public class ControlPanel extends Panel implements Errors {
  24. //_________________________ CLASS METHODS
  25.     public ControlPanel (Timer c, QTPlayer m, DirectGroup dg, Compositor sh) {
  26.         this.comp = c;
  27.         this.mov = m;
  28.         this.dg = dg;
  29.         shTimer = sh.getTimer();
  30.         dgTimer = dg.getTimer();
  31.         
  32.         
  33.         GridBagLayout gb = new GridBagLayout();
  34.         setLayout (gb);
  35.  
  36.         GridBagConstraints cons = new GridBagConstraints();
  37.         cons.fill = GridBagConstraints.HORIZONTAL;
  38.         cons.insets = new Insets (1, 1, 1, 1);        
  39.         cons.weightx = 1.0;
  40.         
  41.         cons.gridy = 0;
  42.         cons.gridx = 1;
  43.         add (rateLabel, cons);
  44.         
  45.         cons.gridx = 2;
  46.         add (rateField, cons);
  47.         
  48.         cons.gridy = 1;
  49.         cons.gridx = 1;
  50.         add (compLabel, cons);
  51.         
  52.         cons.gridx = 2;
  53.         add (compField, cons);
  54.                 
  55.         cons.gridy = 2;
  56.         cons.gridx = 0;
  57.            add (movCb, cons);
  58.         
  59.         //sprites
  60.         cons.gridy = 2;
  61.         cons.gridx = 2;
  62.         add (spriteLabel, cons);
  63.         
  64.         cons.gridx = 3;
  65.         add (spriteField, cons);
  66.         
  67.         //directgroup controller
  68.         rateField.addActionListener (new ActionListener () {
  69.                 public void actionPerformed (ActionEvent event) {
  70.                     String str = new String (event.getActionCommand());
  71.                     dgTimer.setRate (new Float (str).floatValue());
  72.                 }
  73.             });
  74.             
  75.         //compositor controller (ripples and spaceships)                
  76.         compField.addActionListener (new ActionListener () {
  77.                 public void actionPerformed (ActionEvent event) {
  78.                     String str = new String (event.getActionCommand());
  79.                     comp.setRate (new Float (str).floatValue());
  80.                 }
  81.             });
  82.         
  83.         //movie looping controller
  84.         movCb.addItemListener(new ItemListener() {
  85.               public void itemStateChanged (ItemEvent ev) {
  86.                 if (((Checkbox)ev.getItemSelectable()).getState()) {
  87.                     try {
  88.                         mov.getMovieController().setLooping(true);
  89.                     }catch(QTException ex) {
  90.                         throw new QTRuntimeException (ex);
  91.                     }
  92.                 }                
  93.                 else {
  94.                     try {
  95.                         mov.getMovieController().setLooping(false);
  96.                     }catch(QTException ex) {
  97.                         throw new QTRuntimeException (ex);
  98.                     }
  99.                 }    
  100.             }
  101.         });    
  102.                 
  103.         //spaceships rate controller
  104.         spriteField.addActionListener (new ActionListener () {
  105.                 public void actionPerformed (ActionEvent event) {
  106.                     String str = new String (event.getActionCommand());
  107.                     shTimer.setRate (new Float (str).floatValue());
  108.                 }
  109.         });
  110.     }
  111.  
  112.     public void setDisplay () throws QTException {
  113.         rateField.setText (Float.toString (dgTimer.getRate()));
  114.         spriteField.setText (Float.toString (shTimer.getRate()));
  115.         compField.setText (Float.toString (comp.getRate()));
  116.     }
  117.     
  118. //_________________________ INSTANCE VARIABLES
  119.     private Label rateLabel = new Label ("Direct Group Rate:", Label.RIGHT);
  120.     private TextField rateField = new TextField (5);
  121.     
  122.     private Label compLabel = new Label ("Compositor Rate:", Label.RIGHT);
  123.     private TextField compField = new TextField (5);
  124.     
  125.     private Checkbox movCb = new Checkbox("Loop Movie");
  126.     
  127.     private Label spriteLabel = new Label ("Sprites Rate:", Label.RIGHT);
  128.     private TextField spriteField = new TextField (5);
  129.  
  130.  
  131.     private Timer comp;
  132.     private QTPlayer mov;
  133.     private Timer dgTimer;
  134.     private Timer shTimer;
  135.     private DirectGroup dg;
  136. //_________________________ INSTANCE METHODS
  137.     /**
  138.      * @return a Dimension object which defines the minimum size
  139.      */     
  140.     public Dimension getMinimumSize() { return new Dimension (0, 80); }
  141.  
  142.     /**
  143.      * @return a Dimension object which defines the preferred size
  144.      */     
  145.     public Dimension getPreferredSize() { return getMinimumSize(); }
  146. }
  147.